package proxy_jdk;

import java.lang.reflect.Proxy;

public class CustomerProxyObject {

    public static void main(String[] args) {

        //1.创建目标对象
        CustomerCRUDImpl targetObject = new CustomerCRUDImpl();

        //2.创建代理类的实例化对象
        MySQLConnHandler handler = new MySQLConnHandler(targetObject);

        /**
         * 3.创建代理对象
         * @Param ClassLoader loader  目标对象的类加载器
         * @Param Class<?>[] interfaces 目标对象的所有的接口
         * @Param InvocationHandler h   目标对象要使用的代理类
         */
        CustomerCRUD proxy = (CustomerCRUD) Proxy.newProxyInstance(
                targetObject.getClass().getClassLoader(),
                targetObject.getClass().getInterfaces(),
                handler
        );


        proxy.addCustomer(new Customer());
        System.out.println("====================================");

        proxy.deleteCustomer("1");
        System.out.println("====================================");

        proxy.updateCustomer(new Customer());
        System.out.println("====================================");

        System.out.println(proxy.queryAllCustomers());

    }

}
